package com.hyjx.framework.uc.user;

import com.hyjx.framework.uc.depart.DepartModel;
import com.hyjx.framework.uc.menu.MenuModel;
import com.hyjx.framework.uc.role.RoleModel;

import java.sql.SQLException;
import java.util.List;

/**
 * 用户服务接口
 *
 * @author Peter
 */
public interface UserService {
    /**
     * 增加
     *
     * @param model
     * @return
     */
    boolean add(UserModel model);
    
    /**
     * 更新
     *
     * @param model
     * @return
     */
    int update(UserModel model);
    
    /**
     * 删除
     *
     * @param id
     * @return
     */
    int delete(String id);
    
    /**
     * 获取用户信息列表json string
     *
     * @param bean
     * @return
     */
    String getUsers(UserBean bean);
    
    /**
     * 取用户角色对应关系字符串
     *
     * @param id
     * @return
     */
    String getUserRoleStr(String id);
    
    /**
     * 根据id取用户
     *
     * @param id
     * @return
     */
    UserModel getUserById(String id);
    
    /**
     * 取部门树
     *
     * @return
     *
     * @throws SQLException
     */
    List<DepartModel> getUser4Tree() throws SQLException;
    
    /**
     * 登录时验证
     *
     * @param userModel
     * @return
     *
     * @throws SQLException
     */
    UserModel login(UserModel userModel) throws SQLException;
    
    /**
     * 根据用户id取用户权限菜单
     *
     * @param user_id
     * @return
     *
     * @throws SQLException
     */
    List<MenuModel> getUserMenuList(String user_id) throws SQLException;
    
    /**
     * 根据用户id取其对应角色列表
     *
     * @param user_id
     * @return
     *
     * @throws SQLException
     */
    List<RoleModel> getuserRoleList(String user_id) throws SQLException;
    
    List<UserModel> getUsersByDeptCode(String deptCode) throws SQLException;
    
    int updatepwd(UserModel um2);
    
    /**
     * 根据用户菜单列表取一级导航菜单
     *
     * @param list
     * @return
     */
    List<MenuModel> getNavMenuList(List<MenuModel> list);
    
    /**
     * 获取所有用户列表
     *
     * @return
     */
    List<UserModel> getAllUsers();
    
    /**
     * 取所有用户对应角色数据
     *
     * @return
     */
    List<UserRoleModel> queryAllUserRoleList();
    
    /**
     * 根据部门编码将人员置为无效
     *
     * @param deptCode 部门编码
     * @return 结果 true:成功，false:失败
     */
    boolean disableUserByDeptCode(String deptCode);
    
    int logic_delete(String ids);
}